// pages/citylist/citylist.js
const map = require('../../libs/map.js')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    letter: 'A',  // 绑定当前滚动位置对应的字母
    map: map,  // 绑定所有的城市信息
    locSuccess: false,  // 表示定位是否成功
  },

  /** 点击城市名称 */
  tapCity(event){
    let city = event.target.dataset.c
    console.log(city)
    // 将city 存入 globalData
    getApp().globalData.cityname = city
    wx.navigateBack()
  },

  /** 点击右侧导航的字母后触发，执行该方法 */
  tapLetter(event){
    let l = event.target.dataset.l
    this.setData({letter: l})
  },

  /** 加载定位城市 */
  getLocCity(){ 
    // 引入QQMapWX类， 创建对象
    let QQMapWX = require('../../libs/qqmap-wx-jssdk')
    let qqmapsdk = new QQMapWX({
      key: 'A7CBZ-FZ73U-PUPV7-BINEG-ICD57-KAB6J'
    }) 
    // 调用qqmapsdk的方法，使用腾讯位置服务的功能
    qqmapsdk.reverseGeocoder({ 
      success: (res)=>{
        let city = res.result.address_component.city
        console.log('解析结果', city)
        // 将城市名称显示在左上角
        this.setData({
          cityname: city,
          locSuccess: true
        })
      },
      fail: (err)=>{ 
        console.warn('解析失败', err) 
        this.setData({cityname: '定位失败，点击重试'})
        
      }
    })
  },

  /** 点击当前定位城市text执行 */
  tapLocCity(){
    // 定位失败时，重新定位
    if(!this.data.locSuccess){
      console.log('定位失败了..需要重新定位')
      // 弹出对话框，通知用户重新赋予权限
      this.showAuthDialog()

    }else {
      // 定位成功时存
      getApp().globalData.cityname = this.data.cityname
      wx.navigateBack()
    }
  },

  showAuthDialog(){
    wx.showModal({
      title: '提示',
      content: '并未赋予定位权限，是否重新授权？',
      cancelText: '我再想想',
      confirmText: '重新授权',
      success: (res)=>{
        // res 描述了用户选择的结果 
        // res =>{cancel:false, confirm:true}
        if(res.confirm){ // 用户选择了：重新授权
          wx.openSetting({
            success: (settingRes)=>{
              console.log(settingRes)
              // 如果用户重新赋予了定位权限，那么自动重新定位
              if(settingRes.authSetting["scope.userLocation"]){
                this.getLocCity()
              }
            }
          })
        }
      }
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log(map)
    this.getLocCity()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})